Programming a data network device using user defined scripts with licenses

ABSTRACT

Provided are methods and systems for configuring a network device with user-defined instruction scripts. The method may commence with receiving a request for a network session between a client device and a server. The method may further include receiving a user-defined class and a user-defined object configuration. The user-defined class and the user-defined object configuration may include the user-defined instruction scripts provided by a user of the client device. The method may further include instructing an object virtual machine to generate at least one user-defined object based on the user-defined class and the user-defined object configuration. The method may continue with instructing an object virtual machine to generate at least one user-defined object based on the user-defined class and the user-defined object configuration.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is a continuation of U.S. patent application Ser. No. 14/492,465, filed Sep. 22, 2014 and entitled “Programming a Data Network Device Using User Defined Scripts with License”, which is a continuation-in-part and claims the priority benefit of U.S. patent application Ser. No. 14/295,265 filed Jun. 3, 2014 and entitled “Programming a Data Network Device Using User Defined Scripts.” The disclosures of the above-referenced patent applications are incorporated herein by reference for all purposes.

BACKGROUND OF THE INVENTION Field of the Invention

The present invention relates generally to data networks, and more particularly, to a data network device that is programmed using user defined scripts.

Description of the Related Art

In a typical network deployment scenario, a company, such as a service provider or a corporation, constructs a data network by purchasing or leasing one or more network devices, connecting the devices with each other and to servers and gateways, and configuring the devices to reflect the network design. The data network is controlled and operated by the company. The company may use the data network to serve its clients or internal business divisions. For example, a web hosting service provider can host websites for its clients and allows the clients' data traffic to be processed by the data network. Often, the company also provides servers such as web servers or video servers to serve the clients.

Though it is common for a service provider to allow the clients to download and to run client software on the provided servers, it is not possible for the clients to download client software or instructions onto the network devices within the data network. This limitation presents issues to the service provider as well as the clients. As there are many clients and each client has different needs, it is impossible for the service provider to offer a one-size-fits-all or a gold-silver-bronze type of network service policy to accommodate many client needs in the data network. Clients, on the other hand, want to operate their own software, policies, and configuration and control of network resources that they lease from the service provider. All in all, both parties have a common desire to open up the data network so that a client can download client software directly to the network devices and so that the service provider can offer a better business experience to satisfy clients' needs.

It should be apparent from the foregoing that there is a need to provide a method to program a network device with user defined instruction scripts.

SUMMARY

This summary is provided to introduce a selection of concepts in a simplified form that are further described in the Detailed Description below. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.

The present disclosure is related to approaches for a user to program a network device with user-defined instruction scripts. An exemplary method for configuring a network device with user-defined instruction scripts may commence with receiving a request for a network session between a client device and a server. The method may further include receiving a user-defined class and a user-defined object configuration. The user-defined class and the user-defined object configuration may include the user-defined instruction scripts provided by a user of the client device. The method may further include instructing an object virtual machine to generate at least one user-defined object based on the user-defined class and the user-defined object configuration. The method may continue with instructing an object virtual machine to generate at least one user-defined object based on the user-defined class and the user-defined object configuration.

A system for configuring a network device with user-defined scripts is also disclosed. The system may comprise a servicing node and at least one node controller. The servicing node may comprise a first processor, a first memory coupled to the first processor and storing instructions executable by the first processor, and an object virtual machine. The servicing node may be configured to receive a request for a network session between a client device and a server. The servicing node may be further configured to receive a user-defined class and a user-defined object configuration. The user-defined class and the user-defined object configuration may include the user-defined instruction scripts provided by a user of the client device. The servicing node may be further configured to instruct an object virtual machine to generate at least one user-defined object based on the user-defined class and the user-defined object configuration. The servicing node may be further configured to apply the at least one user-defined object to a data packet of the network session. The at least one node controller may include a second processor and a second memory coupled to the second processor and storing instructions executable by the second processor. The at least one node controller may be configured to receive the user-defined class and the user-defined object configuration from the user and send the user-defined class and the user-defined object configuration to the servicing node.

Additional objects, advantages, and features will be set forth in part in the detailed description section of this disclosure, which follows, and in part will become apparent to those skilled in the art upon examination of this specification and the accompanying drawings or may be learned by production or operation of the example embodiments. The objects and advantages of the concepts may be realized and attained by means of the methodologies, instrumentalities, and combinations particularly pointed out in the appended claims.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments are illustrated by way of example and not by limitation in the figures of the accompanying drawings, in which like references indicate similar elements.

FIG. 1 illustrates an exemplary embodiment of a servicing node servicing a session based on user defined objects.

FIG. 2 illustrates an exemplary embodiment of a network node.

FIG. 3 illustrates an exemplary embodiment of programming a servicing node with user defined class.

FIG. 4 illustrates an exemplary embodiment of configuring user defined objects.

FIG. 5 illustrates an exemplary embodiment of processing a data packet of a session using user defined objects.

FIG. 6 illustrates an exemplary embodiment of generating accounting data.

FIG. 7 illustrates an exemplary embodiment of deploying network services using user defined objects

FIG. 8 illustrates another exemplary embodiment of deploying network services using user defined objects.

FIG. 9 illustrates an exemplary embodiment of creating a user defined object using license attribute information.

DETAILED DESCRIPTION

The following detailed description includes references to the accompanying drawings, which form a part of the detailed description. The drawings show illustrations in accordance with example embodiments. These example embodiments, which are also referred to herein as “examples,” are described in enough detail to enable those skilled in the art to practice the present subject matter. The embodiments can be combined, other embodiments can be utilized, or structural, logical, and electrical changes can be made without departing from the scope of what is claimed. The following detailed description is therefore not to be taken in a limiting sense, and the scope is defined by the appended claims and their equivalents.

FIG. 1 illustrates an exemplary embodiment of a servicing node processing a service session 105 (also referred to herein as session 105) between a client 110 and a server 115. In one embodiment, client 110 conducts a session 105 with server 115 over data network 120. Data packets of session 105 are sent through data network 120 to servicing node 125. Servicing node 125 may modify session 105 data packets and forward the data packets to server 115.

In some embodiments, client 110 is a computing device connected to data network 120 using a network module of the client. The client device can be a personal computer, a laptop computer, a tablet, a smartphone, a mobile phone, an Internet phone, a netbook, a home gateway, a broadband gateway, a network appliance, a set-top box, a media server, a personal media player, a personal digital assistant, an access gateway, a networking switch, a server computer, a network storage computer, or any computing device comprising a network module and a processor module.

In various embodiments, server 115 is a server computer connected to data network 120 using a network module of the server computer. Server 115 serves service session 105 requested by client 110. Service session 105 may be an application service session and include, but is not limited to, a HTTP session, a file transfer session, a FTP session, a voice over IP session, a SIP session, a video or audio streaming session, an e-commerce session, an enterprise application session, an email session, an online gaming session, a teleconference session, or a Web-based communication session. Data network 120 includes an Ethernet network, an ATM network, a cellular network, a wireless network, a Frame Relay network, an optical network, an IP network, or any data communication network utilizing other physical layer, link layer capability or network layer to carry data packets.

In some embodiments, servicing node 125 includes a network application 130 and applies network application 130 to session 105 data packets. Network application 130 includes, but is not limited to, a network proxy application such as TCP proxy, HTTP proxy, SIP proxy, a content delivery network application, a server load balancing application, a firewall, a remote access application, an application delivery application, a network traffic management and control application, a legal interception, a network optimization, an email scanning application, or an access control application.

FIG. 2 illustrates an exemplary embodiment of a network node 205 which can be a servicing node or a node controller. Network node 205 includes, but is not limited to, a processor module 210, a network module 215, and a computer storage module 220. Processor module 210 includes one or more processors which may be a micro-processor, an Intel processor, an AMD processor, a MIPS processor, an ARM-based processor, or a RISC processor. In some embodiments, processor module 210 includes one or more processor cores embedded in a processor. Additionally, processor module 210 may include one or more embedded processors, or embedded processing elements in a Field Programmable Gate Array (FPGA), an Application Specific Integrated Circuit (ASIC), or Digital Signal Processor (DSP). In various embodiments, network module 215 includes a network interface such as Ethernet, optical network interface, a wireless network interface, T1/T3 interface, or a WAN or LAN interface. Furthermore, network module 215 includes a network processor. Computer storage module 220 includes RAM, DRAM, SRAM, SDRAM, or memory utilized by processor module 210 or network module 215. Computer storage module 220 stores data utilized by processor module 210 and comprises a hard disk drive, a solid-state drive, an external disk, a DVD, a CD, or a readable external disk. Additionally, computer storage module 220 stores one or more computer programming instructions, which when executed by processor module 210 or network module 215, implement one or more of the functionalities of the present invention. Network node 205 also may include an input/output (I/O) module 225, which comprises a keyboard, a keypad, a mouse, a gesture-based input sensor, a microphone, a physical or sensory input peripheral, a display, a speaker, or a physical or sensual output peripheral.

Referring again to FIG. 1, in various embodiments, servicing node 125 includes a user defined object 135 and an object virtual machine 140. User defined object 135 includes one or more parameters to enable one or more instructions to be executed by object virtual machine 140. Servicing node 125 may invoke object virtual machine 140 to execute the instructions enabled by user defined object 135 while servicing node 125 processes session 105. In other embodiments, servicing node 125 may apply user defined object 135 in conjunction with network application 130 to process session 105.

In some embodiments, servicing node 125 creates user defined object 135 from a user defined class 145 and a user defined object configuration 150. User defined class 145 includes an instruction script or one or more instructions, a template for one or more instructions, or a description that can be used to create user defined object 135. User defined object configuration 150 includes one or more configurations, one or more commands, one or more pieces of data, or one or more attributes for creating user defined object 135. Node controller 155 programs servicing node 125 with user defined class 145 script or by sending user defined class 145 to servicing node 125. Alternatively, node controller 155 or another node controller 160 sends to servicing node 125 user defined object configuration 150. While two node controllers are depicted in exemplary FIG. 1, any number of node controllers may be connected to a servicing node.

In various embodiments, servicing node 125 may create and apply user defined object 135 after receiving user defined object configuration 150 and user defined class 145, prior to processing session 105, or when processing session 105 is in progress.

FIG. 3 illustrates an exemplary embodiment for servicing node 125 to receive a plurality of user defined classes such as user defined class 305 and user defined class 310. Servicing node 125 may receive the plurality of user defined classes from node controller 155 or from a plurality of node controllers such as node controller 155 and node controller 160.

In some embodiments, user defined class 305 and user defined class 310 are not related. In other embodiments, user defined class 305 is related to user defined class 310. Table 1a and Table 1b illustrate exemplary embodiments of user defined class 305 and user defined class 310.

TABLE 1a // User Defined Class 305 name = ud-se-name, // Name of User Defined Class license = se-isp, // require license named “se-isp” config-fields: config = <start>,     // created object has a name identity   se-name = type-string, help-str SE name,     // object has an IP address attribute   ip = type-cidr, help-str SE IP address range>,     // Security policy   ddos-checks = type-bool, help-str Enable ddos checks on SE,     // Service policy, such as bandwidth (bw), capacity, allowed     network appl   bw = type-number, help-str Mbps,   conn-limit = type-number, help-str No. of connections,     // selectable list of network applications   permit-apps = type-keyword, help-str Permit application list,   http = type-flag,   ftp = type-flag,   https = type-flag,     // accounting policy   enable-stats-collection = type-flag, config=<end>;

TABLE 1b // User Defined Class 310 name=ud-se-region help=Create/delete a region object, license=se-isp, config-fields: config=<start>,   se-region=type-string, help-str SE region,     // User Defined Class 310 uses User Defined Class 305     “se-name”   se-name=type-string, help-str SE name   ud-se-name>, config=<end>;

In Table 1a, user defined class 305 is named “ud-se-name”. The attribute occurrences being “multiple” allows servicing node 125 to create multiple user defined objects based on user defined class 305. The attribute license “se-isp” indicates user defined class 305 requires a license “se-isp” in order to create an associated user defined object. The attribute config-fields includes a list of configurable attributes which are to be included in a user defined object configuration. The config attribute se-name assigns a name to a created user defined object. The config attribute ip assigns an IP address or IP address range to a created user defined object. Typically, different created user defined objects of user defined class 305 are configured with different IP addresses. The ip attribute allows object virtual machine 140 to determine if a user defined object is applicable to a session data packet. The config attributes may include other attributes such as layer 2 information, TCP/UDP port number, a pattern, a cookie, a layer 7 identifier, or any attribute that can be used to identify a data packet or a session.

The config attributes may include one or more attributes related to a security policy such as ddos-checks (applying Denial of Service (DOS) and Distributed Denial of Services (DDOS) detection). The config attributes include one or more attributes related to service policy such as bw (bandwidth capacity), conn-limit (capacity of active connections), and others. The config attributes may include permission to use one or more network applications available within servicing node 125, such as http, ftp, and https. The config attributes may further include one or more attributes related to data collection or accounting record processing or policy, such as enable-stats-collection (enabling the collection of various statistics).

Table 1b illustrates an embodiment of user defined class 310. In this exemplary embodiment, user defined class 310 refers to user defined class 305. The name attribute gives user defined class 310 a name of “ud-se-region”. The help attribute indicates a network administrator may get help in order to generate a user defined object configuration using ud-se-region. The occurrences attribute “multiple” indicates multiple user defined objects using ud-se-region can be created. In other embodiments, having occurrences attribute “single” is to indicate at most one user defined object can be created based on the user defined class. The license attribute indicates a license named “se-isp” is required. In the exemplary embodiment of Table 1b, ud-se-region uses the same license as ud-se-name. In other embodiments, ud-se-region has a different license attribute than ud-se-name.

The config attributes of ud-se-region include se-region attribute assigning a name to a user defined object using ud-se-region. The configurable se-name attribute includes a list of user defined objects with names based on se-name. Recall Table 1a where se-name is a configurable name for a user defined object of ud-se-name. The configurable se-name attribute of ud-se-region, therefore, includes a list of user defined objects of ud-se-name.

Referring to FIG. 4, servicing node 125 receives user defined object configuration 405 from node controller 160. Table 2 illustrates an exemplary embodiment of user defined object configuration 405 based on Table 1a and Table 1b.

TABLE 2 // User Defined Object Configuration 405   ud-se-name se-name=Seattle ip=1.1.1.0/24 bw=200Mbps conn-limit=500 permit-apps http ftp enable-stats-collection   ud-se-name se-name=”Bay Area” ip=1.1.3.0/23 bw=500Mbps ddos- check conn-limit=2000 permit-apps http ftp https enable-stats-collection   ud-se-name se-name=”Los Angeles” ip=1.1.5.0/23 bw=1000Mbps conn-limit=2500 permit-apps http ftp https enable-stats-collection   ud-se-region se-region=”West Coast” se-name=Seattle se-name=“Bay Area” se-name=”Los Angles” bw=2500Mbps

In Table 2, three ud-se-name objects are configured. The first one is named Seattle with an IP address 1.1.1.0/24, a bandwidth capacity of 200 Mbps, a connection capacity of 500, a list of permitted network applications “http, ftp”, and with statistics data collection enabled.

The second ud-se-name object is named “Bay Area” with a configured IP address 1.1.3.0/23, a bandwidth capacity of 500 Mbps, a connection capacity of 2000, a list of permitted network applications “http, ftp, https”, and with statistics data collection enabled. Se-name object “Bay Area” also has security policy DDOS enabled.

The third ud-se-name object is named “Los Angeles” with a configured IP address 1.1.5.0/23, a bandwidth capacity of 1000 Mbps, a connection capacity of 2500, a list of permitted network applications “http, ftp, https” and with statistics data collection enabled.

User defined object configuration 405 includes one configured ud-se-region object, named “West Coast” and a bandwidth capacity of 2500 Mbps. The ud-se-region object includes the se-name objects “Bay Area”, Seattle, and “Los Angeles”. In this embodiment, the bandwidth capacity of 2500 Mbps is applied as the capacity for the combined bandwidth capacities of se-name objects “Bay Area”, Seattle and “Los Angeles”.

Upon receiving user defined object configuration 405 and user defined classes 305 and 310, servicing node 125 instructs object virtual machine 140 to generate various user defined objects according to configuration 405, such as user defined objects 410 and 415. In some embodiments, object virtual machine 140 determines that a user defined class requires a license. Object virtual machine 140 communicates with a network license manager 420, which can be a network computer or a software module in a network server or in a node controller. Once object virtual machine 140 determines that servicing node 125 is licensed to use the user defined class, object virtual machine 140 creates the user defined object, such as ud-se-name object “Bay Area”. In one embodiment, object virtual machine 140 verifies the necessary licenses to use user defined classes 305 and 310, object virtual machine 140 creates ud-se-name objects “Bay Area”, Seattle and “Los Angeles”, and ud-se-region object “West Coast”.

FIG. 5 illustrates an exemplary embodiment of processing a data packet 505 of session 105. Data packet 505 may be sent by client 110 to server 115 or from server 115 to client 110. In various embodiments, client 110 sends data packet 505 to server 115, and servicing node 125 receives data packet 505. Then, servicing node 125 sends data packet 505 to object virtual machine 140 for processing, and object virtual machine 140 matches data packet 505 with user defined object 535. Using an embodiment where user defined object 535 is an ud-se-name object named “Bay Area”, object virtual machine 140 matches the ud-se-name IP address attribute with an IP address of data packet 505 such as a destination IP address or a source IP address. If object virtual machine 140 determines there is a match, object virtual machine 140 applies ud-se-name object “Bay Area” to data packet 505. In some embodiments, object “Bay Area” enables instructions 510 based on configured attributes of object “Bay Area”, which include ddos-check, enable-stats-collection, bandwidth capacity, connection capacity, and a list of permissible network applications. Object virtual machine 140 applies instructions 510 to data packet 505. In various embodiments, object virtual machine 140 checks data packet 505 for DDOS detection and collects data statistics such as packet count, data count, and/or connection count. If a DDOS is detected, object virtual machine 140 may apply security policy handling to data packet 505 or session 105. In other embodiments, object virtual machine 140 checks data packet 505 for bandwidth capacity for object “Bay Area”. If bandwidth capacity for object “Bay Area” is not exceeded, data packet 505 is allowed to be processed further. However, if the bandwidth capacity for object “Bay Area” is exceeded, object virtual machine 140 may delay processing data packet 505 until bandwidth capacity is no longer exceeded or object virtual machine 140 may discard data packet 505.

In some embodiments, object virtual machine 140 matches data packet 505 against the list of permissible network applications in object “Bay Area”. Object virtual machine 140 retrieves layer 7 information from data packet 505, such as a TCP/UDP port number, content in the data packet 505 payload, or information based on a prior data packet of session 105, to match the list of network applications. If data packet 505 represents a HTTP data packet and HTTP is in the list of permissible network applications, object virtual machine 140 allows continuing processing of data packet 505. If, for example, data packet 505 represents a SIP data packet and SIP is not in the list of permissible network applications, object virtual machine 140 may discard data packet 505 or record an alert event for servicing node 125.

In various embodiments, object virtual machine 140 determines user defined object 515, for example, being ud-se-region object “West Coast”, is to be applied. Object virtual machine 140 may determine to apply user defined object 515 based on the association between ud-se-region object “West Coast” and se-name object “Bay Area” or based on a match between data packet 505 and user defined object 515. Object virtual machine 140 applies instructions 525 enabled by the configurable attributes of ud-se-region object “West Coast,” which include bandwidth capacity and statistics collection. Object virtual machine 140 processes data packet 505 for bandwidth capacity and statistics collection according to the corresponding object “West Coast” configured values.

In some embodiments, user defined object 535 is associated with one or more object variables 520, such as one or more counters for the statistics collection, bandwidth capacity, number of active connections, and DDOS detection variables. Object virtual machine 140 updates values of object variables 520 upon processing data packet 505. Object virtual machine 140 may update object variables 520 from time to time or based on administrator's command. In a similar embodiment, object virtual machine 140 updates object variables 530 associated to user defined object 515.

Object virtual machine 140 further sends data packet 505 to network application 130 for processing. During processing of data packet 505, network application 130 may invoke object virtual machine 140 for additional processing. Using ud-se-name object “Bay Area” for illustration, network application 130 determines if data packet 505 is a connection request. Network application 130 invokes object virtual machine 140 to process a connection request, and object virtual machine 140 determines that object “Bay Area” is applicable and checks if the connection capacity attribute of object “Bay Area” is exceeded. If the connection capacity attribute of object “Bay Area” is not exceeded, object virtual machine 140 instructs network application 130 to continue processing data packet 505. If the connection capacity attribute of object “Bay Area” is exceeded, object virtual machine 140 may instruct network application 130 to reject the connection request or to delay processing data packet 505 until the connection capacity attribute is no longer exceeded. In some embodiments, object virtual machine 140 updates object variables 520 of object “Bay Area”. In another embodiment, object virtual machine 140 determines if user defined object 515 or object “West Coast” is also applicable. Object virtual machine 140 applies enabled instructions 525 of object “West Coast” to the connection request of data packet 505, and updates object variables 530 of object “West Object.”

In some embodiments, if data packet 505 includes a session disconnect indication, network application 130 invokes object virtual machine 140 to process the session disconnect indication of data packet 505.

If user defined object 410 or user defined object 515 includes a layer 7 security policy or service policy configured attribute, network application 130 invokes object virtual machine 140 to apply the appropriate policy.

If network application 130 modifies data packet 505, such as applying a network address translation (NAT), modifying a cookie, replacing some content in data packet 505 payload, inserting data into data packet 505, or other modifications known in the art, network application 130 may invoke object virtual machine 140 to process the modified data packet.

After the processing of data packet 505 by network application 130 and object virtual machine 140, servicing node 125 sends a resulting data packet to client 110 or server 115.

In FIG. 6, object virtual machine 140 provides object variables 520 of user defined object 410 to a node controller 155. Object variables 520 may include accounting data 605 and/or statistics data 610. Accounting data 605 may include number of completed connections, number of security alerts based on security policy attributes of user defined object 410, amount of traffic over a period of time, one or more client device identities, one or more user identities of client device, or other useful accounting data. Statistics data 610 may include number of active connections, traffic statistics such as byte count, packet counts, or other statistics data. In some embodiments, node controller 155 receives accounting data 605 and statistics data 610 of user defined object 620. Node controller 155 generates a report 615 based on the received data. Report 615 may include billing report, security report, service level agreement report, network security report, network monitoring report, network capacity or resource utilization report, user report associated to user defined object 620, or report about a service provider, a regional service provider, a business entity associated to user defined object 620, or a client. In various embodiments, node controller 155 generates report 615 based on additional data of other user defined objects obtained from servicing node 125 or other servicing nodes.

In some embodiments, node controller 155 requests servicing node 125 to provide the data associated to user defined object 620 and/or other user defined objects created by object virtual machine 140. Node controller 155 may request from time to time, periodically, or based on a schedule, or node controller 155 may send a request per administrator command.

Alternatively, in various embodiments, servicing node 125 sends the data automatically to node controller 155 from time to time, periodically, or based on a schedule. Servicing node 125 may send the data or portion of the data based on an event, an security alert, or an administrator command, or servicing node 125 may send the data when user defined object 410 is removed from object virtual machine 140.

FIG. 7 and FIG. 8 illustrate exemplary embodiments of using servicing nodes with user defined classes and objects. In the exemplary embodiment of FIG. 7, node controller 160 offers cloud services, and sends user defined classes 703, 704, and 705 to servicing node 125. User defined class 704 is designed for cloud services offered to an area or a city, and it includes, but is not limited to, configurable attributes specifying security policies, service policies, IP address space, data collection policies, resource and capacity policies, and supported network applications. User defined class 705 is designed to offer aggregated cloud services over a region or a collection of area services. User defined class 705 may include aggregated IP address space, service policies, application policies, and capacities. User defined class 703 is designed for an aggregated cloud service covering a large geographic area.

In some embodiments, node controller 160 sends a user defined object configuration 710 to object virtual machine 140 to create a plurality of user defined objects based on user defined class 704. These created user defined objects for user defined class 704 are configured for various cities and area districts, each of which is configured with different attributes of security policies and other attributes. In other embodiments, the user defined object configuration 710 configures a plurality of objects based on user defined class 705. These created objects based on user defined class 705 are configured for regions, each of which covers a plurality of cities and area districts corresponding to the objects based on user defined class 704.

In various embodiments, user defined object configuration 710 includes a configuration for a user defined object based on user defined class 703. The created object is configured for a customer 715 of node controller 160. The customer can be a business, a small cloud service provider, a company, an organization, or a private cloud. The user defined classes 703, 704, and 705 may be associated to a license related to the customer 715. The license is verified by license manager 420.

In some embodiments, node controller 160 is associated to a network operating center 720 which obtains statistics data associated to the created user defined objects. Network operating center 720 monitors and manages operation of a data network containing servicing node 125. In other embodiments, node controller 160, which can be a cloud service provider, is associated to billing server 725 which obtains accounting data associated to the created user defined objects. Billing server 725 may generate a billing statement based on the obtained accounting data for customer 715.

FIG. 8 illustrates an exemplary embodiment of user defined classes in an enterprise. Enterprise node controller 805 represents a node controller for an IT department of an enterprise. Enterprise node controller 805 provides user defined class 810, designed to offer company-wide services; user defined class 815, designed to offer departmental services; user defined class 820, designed to offer individual or group level services; and user defined class 825, designed specifically for sales department. Enterprise node controller 805 monitors the IT services using network operating center 720 and specially monitors security breaches and alerts using network security console 830, which obtains security related statistics data from object virtual machine 140.

FIG. 9 illustrates an exemplary embodiment of creating a user defined object using license attribute 905 information. The license attribute 905 information may be for a license that is valid for a specified period of time. For example, the license may be valid for a set number of minutes, hours, days, months, or any other specified time period. The client of the network device can thus configure the network device to enable and disable the license on an on-demand basis, for any fixed length of time, or upon certain trigger events. In this way, a license can be periodically issued and relinquished repeatedly, on an on-demand basis. In an exemplary embodiment, the client of the network device can issue a license to allow the network device to be programmed to allow access to a particular sports event for a few hours, and then automatically disable the license at the end of the time period. In various embodiments, the license can be disabled upon the instruction of the client or other designated user, or upon certain trigger events.

In the exemplary embodiment illustrated in FIG. 9, license attribute 905 of user defined class 910 comprises additional information such as one or more of name 915, key 920, server 925, and time information 930. Object virtual machine 140 uses license attribute 905 to obtain certificate 935 in order to create user defined object 940 of user defined class 910. Server 925 specifies license manager 420, and server 925 may include an IP address of license manager 420, a Web address, a URL, a domain name, or a server name identity for license manager 420. Object virtual machine 140 uses server 925 to determine license manager 420. In some embodiments, object virtual machine 140 uses server 925 information to establish a session with license manager 420. In another embodiment, object virtual machine 140 includes information about license manager 420 and does not use server 925 information to establish the session.

In some embodiments, time information 930 includes one or more of a time duration, a starting time, a starting date, an ending time, an ending date, a list of times, or a recurring indication.

In various embodiments, name 915 comprises an identity of a license. Key 920 may comprise a license key, a public key, a private key, or any confidential key.

Object virtual machine 140 sends license name 915, key 920, and time information 930 to license manager 420. Furthermore, object virtual machine 140 may send additional information to license manager 420 about servicing node 125 such as product label, serial number, pre-determined licenses of servicing node 125, or one or more of previously obtained certificates of previously created user defined objects.

In an exemplary embodiment, license manager 420 processes the received information and responds with certificate 935. Object virtual machine 140 creates user defined object 940 and associates user defined object 940 to certificate 935. Object virtual machine 140 may store certificate 935 in a storage module of servicing node 125.

In some embodiments, certificate 935 includes a time duration indicating validity of certificate 935 for the license. Furthermore, object virtual machine 140 may be connected to a clock 945. Object virtual machine 140 sets up a timer 950 using clock 945, and timer 950 is set according to the time duration of certificate 935. In various embodiments, when timer 950 expires, object virtual machine 140 obtains another certificate for user defined object 940. In another embodiment, when timer 950 expires, indicating that the license has expired, object virtual machine 140 stops using or restricts usage of user defined object 940. Additionally, object virtual machine 140 may inform servicing node 125 an indication of expiration of timer 950 or certificate 935. In various embodiments, object virtual machine 140 removes user defined object 940 after expiration of certificate 935.

In some embodiments, one or more information of license attribute 905 may be specified in a user defined class configuration (not shown) which is used by object virtual machine 140 to create user defined object 940. Additionally, as discussed herein with reference to other exemplary embodiments, license manager 420 may be in communication with billing server 725 and other components of the network. In this way, the network device may be programmable with user-defined scripts to allow the client to operate its own customized license and billing scheme for the use of the network device.

The above description is illustrative and not restrictive. Many variations of the invention will become apparent to those of skill in the art upon review of this disclosure. The scope of the invention should, therefore, be determined not with reference to the above description, but instead should be determined with reference to the appended claims along with their full scope of equivalents. While the present invention has been described in connection with a series of embodiments, these descriptions are not intended to limit the scope of the invention to the particular forms set forth herein. It will be further understood that the methods of the invention are not necessarily limited to the discrete steps or the order of the steps described. To the contrary, the present descriptions are intended to cover such alternatives, modifications, and equivalents as may be included within the spirit and scope of the invention as defined by the appended claims and otherwise appreciated by one of ordinary skill in the art. 

What is claimed is:
 1. A system for configuring a network device with user-defined instruction scripts, the system comprising: a servicing node including a network device, the servicing node comprising: a first processor configured to: receive a request for a network session between a client device and a server; receive a user-defined class and a user-defined object configuration, the user-defined class and the user-defined object configuration including the user-defined instruction scripts provided by a user of the client device to the servicing node, wherein the user-defined class includes one of the following: one or more user instructions, a template for the one or more user instructions, and a description to create at least one user-defined object, and the user-defined object configuration includes one of the following: one or more configurations, one or more commands, one or more pieces of data, and one or more attributes to create the at least one user-defined object; instruct an object virtual machine running on the servicing node to generate the at least one user-defined object based on the user-defined class and the user-defined object configuration, the at least one user-defined object being stored on the servicing node to configure the servicing node to execute the user-defined instruction scripts, the servicing node being further configured to receive a license associated with the user-defined class, the license enabling the servicing node to be configured with the at least one user-defined object, the object virtual machine determining, based on the license, whether the servicing node is licensed to use the user-defined class; wherein the generation includes using the user-defined object configuration to configure the at least one user-defined object based on the user-defined class, wherein the at least one user-defined object comprises instructions for processing one or more network sessions, the instructions being determined based on the user-defined instruction scripts; and apply the at least one user-defined object to a data packet of the network session to process the data packet by applying the instructions comprised in the at least one user-defined object and defined by the user of the network device; a first memory coupled to the first processor, the first memory storing instructions executable by the first processor; and the object virtual machine configured to generate user-defined objects; and at least one hardware node controller comprising: a second processor configured to: receive the user-defined class and the user-defined object configuration from the user; and send the user-defined class and the user-defined object configuration to the servicing node; and a second memory coupled to the second processor, the second memory storing instructions executable by the second processor.
 2. The system of claim 1, wherein the object virtual machine is further configured to: based on the instructing, generate the at least one user-defined object based on the user-defined class and the user-defined object configuration; and store the at least one user-defined object on the servicing node.
 3. The system of claim 1, wherein the license is enabled for the servicing node for a predetermined period of time.
 4. The system of claim 1, wherein the servicing node applies the user-defined object after receiving the user-defined object configuration and user-defined class, prior to the processing the network session between the client device and the server.
 5. The system of claim 1, wherein the servicing node applies the user-defined object after receiving the user-defined object configuration and user-defined class, while the network session between the client device and the server is in progress.
 6. The system of claim 1, wherein the object virtual machine is further configured to determine if the at least one user-defined object is applicable to the data packet of the network session.
 7. The system of claim 6, wherein the object virtual machine is further configured to apply a security policy to the data packet of the network session.
 8. The system of claim 6, wherein the object virtual machine matches the data packet of the network session with a list of permissible network applications associated with the servicing node.
 9. The system of claim 1, wherein the at least one user-defined object is associated with object variables, wherein the object virtual machine provides the object variables of the at least one user-defined object to the at least one hardware node controller.
 10. A method to configure a network device with user-defined instruction scripts, the method comprising: receiving, by a servicing node, a request for a network session between a client device and a server; receiving, by the servicing node, a user-defined class and a user-defined object configuration, the user-defined class and the user-defined object configuration including the user-defined instruction scripts provided by a user of the client device to the servicing node, and receiving, by at least one hardware node controller, the user-defined class and the user-defined object configuration from the user and a license associated with the user-defined class, the license enabling the servicing node to be configured with the at least one user-defined object, and based on the license, determining whether the servicing node is licensed to use the user-defined class; and sending, by the at least one hardware node controller, the user-defined class and the user-defined object configuration to the servicing node; wherein the user-defined class includes one of the following: one or more user instructions, a template for the one or more user instructions, and a description to create at least one user-defined object, and the user-defined object configuration includes one of the following: one or more configurations, one or more commands, one or more pieces of data, and one or more attributes to create the at least one user-defined object; instructing, by the servicing node, an object virtual machine running on the servicing node to generate the at least one user-defined object based on the user-defined class and the user-defined object configuration, the at least one user-defined object being stored on the servicing node to configure the servicing node to execute the user-defined instruction scripts, wherein the generation includes using the user-defined object configuration to configure the at least one user-defined object based on the user-defined class, wherein the at least one user-defined object comprises instructions for processing one or more network sessions, the instructions being determined based on the user-defined instruction scripts; and applying, by the servicing node, the at least one user-defined object to a data packet of the network session to process the data packet by applying the instructions comprised in the at least one user-defined object and defined by the user of the network device.
 11. The method of claim 10, further comprising: based on the instructing, generating, by the object virtual machine, the at least one user-defined object based on the user-defined class and the user-defined object configuration; and storing the at least one user-defined object on the servicing node.
 12. The method of claim 10, further comprising determining, by the object virtual machine, if the at least one user-defined object is applicable to the data packet of the network session.
 13. The method of claim 10, wherein the at least one user-defined object is associated with object variables, wherein the object virtual machine provides the object variables of the at least one user-defined object to the at least one hardware node controller.
 14. A system for configuring a network device with user-defined instruction scripts, the system comprising: a servicing node including a network device, the servicing node comprising: a first processor configured to: receive a request for a network session between a client device and a server; receive a user-defined class and a user-defined object configuration, the user-defined class and the user-defined object configuration including the user-defined instruction scripts provided by a user of the client device to the servicing node, wherein the user-defined class includes one of the following: one or more user instructions, a template for the one or more user instructions, and a description to create at least one user-defined object, and the user-defined object configuration includes one of the following: one or more configurations, one or more commands, one or more pieces of data, and one or more attributes to create the at least one user-defined object; receive a license associated with the user-defined class, the license enabling the servicing node to be configured with the at least one user-defined object; instruct an object virtual machine running on the servicing node to generate the at least one user-defined object based on the user-defined class and the user-defined object configuration, the at least one user-defined object being stored at the servicing node to configure the servicing node to execute the user-defined instruction scripts, wherein the generation includes using the user-defined object configuration to configure the at least one user-defined object based on the user-defined class, wherein the at least one user-defined object comprises instructions for processing one or more network sessions, the instructions being determined based on the user-defined instruction scripts; and apply the at least one user-defined object to a data packet of the network session to process the data packet by applying the instructions comprised in the at least one user-defined object and defined by the user of the network device; a first memory coupled to the first processor, the first memory storing instructions executable by the first processor; and the object virtual machine configured to: determine, based on the license, whether the servicing node is licensed to use the user-defined class; based on the instructing, generate the at least one user-defined object based on the user-defined class and the user-defined object configuration; and store the at least one user-defined object on the servicing node; and at least one hardware node controller comprising: a second processor configured to: receive the user-defined class and the user-defined object configuration from the user; and send the user-defined class and the user-defined object configuration to the servicing node; and a second memory coupled to the second processor, the second memory storing instructions executable by the second processor. 